package com.treepoke.util.enumeration;

import java.io.Serializable;


public class UtilEnumeration {

    /**
     * OperadorComparacion
     */
    public static final Integer CODIGO_OPERADOR_COMPARACION_IGUAL = 1;
    public static final Integer CODIGO_OPERADOR_COMPARACION_DIFERENTE = 2;
    public static final Integer CODIGO_OPERADOR_COMPARACION_MAYOR = 3;
    public static final Integer CODIGO_OPERADOR_COMPARACION_MENOR = 4;
    public static final Integer CODIGO_OPERADOR_COMPARACION_MAYOR_O_IGUAL = 5;
    public static final Integer CODIGO_OPERADOR_COMPARACION_MENOR_O_IGUAL = 6;
    public static final Integer CODIGO_OPERADOR_COMPARACION_LIKE = 7;
    public static final Integer CODIGO_OPERADOR_COMPARACION_NOT_LIKE = 8;
    public static final Integer CODIGO_OPERADOR_IS_NULL = 9;
    
    /**
     * Aplicacion
     */
    public static final Integer CODIGO_PORTAL = 1;
    public static final Integer CODIGO_ENTREGAS = 2;
    public static final Integer CODIGO_AUDITORIA = 3;
    
    /**
     * Canal
     */
    public static final Integer CODIGO_INTERNET = 1;
    
    /**
     * Operacion
     */    
    public static final Integer CODIGO_CONSULTAR = 1;
    public static final Integer CODIGO_INSERTAR = 2;
    public static final Integer CODIGO_MODIFICAR = 3;
    public static final Integer CODIGO_ELIMINAR = 4;
    public static final Integer CODIGO_INICIAR_SESION = 5;
    public static final Integer CODIGO_FINALIZAR_SESION = 6;

    public static enum OperadorComparacion implements Serializable {

        IGUAL(CODIGO_OPERADOR_COMPARACION_IGUAL, "=", "=="),
        DIFERENTE(CODIGO_OPERADOR_COMPARACION_DIFERENTE, "<>", "!="),
        MAYOR(CODIGO_OPERADOR_COMPARACION_MAYOR, ">", ">"),
        MENOR(CODIGO_OPERADOR_COMPARACION_MENOR, "<", "<"),
        MAYOR_O_IGUAL(CODIGO_OPERADOR_COMPARACION_MAYOR_O_IGUAL, ">=", ">="),
        MENOR_O_IGUAL(CODIGO_OPERADOR_COMPARACION_MENOR_O_IGUAL, "<=", "<="),
        LIKE(CODIGO_OPERADOR_COMPARACION_LIKE, "like", null),
        NOT_LIKE(CODIGO_OPERADOR_COMPARACION_NOT_LIKE, "not like", null),
        IS_NULL(CODIGO_OPERADOR_IS_NULL, "is null", null);
        private final Integer id;
        private final String descripcionSQL;
        private final String descripcionJava;

        private OperadorComparacion(Integer id, String descripcionSQL,
                String descripcionJava) {
            this.id = id;
            this.descripcionSQL = descripcionSQL;
            this.descripcionJava = descripcionJava;
        }

        public Integer getId() {
            return id;
        }

        public String getDescripcionSQL() {
            return descripcionSQL;
        }

        public String getDescripcionJava() {
            return descripcionJava;
        }
    }

    public static enum Aplicacion implements Serializable {

        PORTAL(CODIGO_PORTAL, "Portal"),
        ENTREGAS(CODIGO_ENTREGAS, "Entregas"),
        AUDITORIA(CODIGO_AUDITORIA, "Auditoria");
        
        private final Integer id;
        private final String descripcion;

        private Aplicacion(Integer id, String descripcion) {
            this.id = id;
            this.descripcion = descripcion;
        }

        public String getDescripcion() {
            return descripcion;
        }

        public Integer getId() {
            return id;
        }
    }
    
    public static enum Canal implements Serializable {

        INTERNET(CODIGO_INTERNET, "Internet");

        private final Integer id;
        private final String descripcion;

        private Canal(Integer id, String descripcion) {
            this.id = id;
            this.descripcion = descripcion;
        }

        public String getDescripcion() {
            return descripcion;
        }

        public Integer getId() {
            return id;
        }
    }
    
    public static enum Operacion implements Serializable {
        
        CONSULTAR(CODIGO_CONSULTAR, "Consultar"),
        INSERTAR(CODIGO_INSERTAR, "Insertar"),
        MODIFICAR(CODIGO_MODIFICAR, "Modificar"),
        ELIMINAR(CODIGO_ELIMINAR, "Eliminar"),
        INICIAR_SESION(CODIGO_INICIAR_SESION, "Iniciar Sesion"),
        FINALIZAR_SESION(CODIGO_FINALIZAR_SESION, "Finalizar Sesion");
        
        private final Integer id;
        private final String descripcion;

        private Operacion(Integer id, String descripcion) {
            this.id = id;
            this.descripcion = descripcion;
        }

        public String getDescripcion() {
            return descripcion;
        }

        public Integer getId() {
            return id;
        }
    }
}
